/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package negocio;

import java.math.BigDecimal;
import javax.ejb.Local;

/**
 *
 * @author Ing. Monica Merlo, Ing. Agustin  Fernandez
 */
@Local
public interface GestorCertificadoLocal {

     /***
     * Retorna lista con instancias de Certificado cuyo idObra sea igual al
     * parametro idObra.
     * @param idObra
     * @return lista de certificados por obra.
     * Interfaz local
     */

    public java.util.List verCertificadosObra(int idObra);

     /***
     * Agrega una nueva instancia de Certificado a la base de datos
     * @param nroCertificado
     * @param periodo
     * @param fechaMedicion
     * @param monto
     * @param fondos
     * @param nroOrdenPago
     * @param estado
     * @param idObra
     * @param idEmpresaContratista
     * @return true si el nuevo certificado persistió, false si no persistió
     * Interfaz local
     */
    public boolean agregarCertificado(int nroCertificado, String periodo, java.util.Date fechaMedicion, BigDecimal monto,
            String fondos, int nroOrdenPago, String estado, int idObra, int idEmpresaContratista);

    /***
      * Retorna una lista de los nombres de todas las instancias de EstadoCertificado
      * @return lista de los estados de los certificados
      * Interfaz local
      */
    public java.util.List estadosCertificado();

    /***
     * Retorna una instancia de tipo EstadoCertificado cuyo nombre coincida
     * con el parametro nombre.
     * @param nombre
     * @return estado del certificado
     * Interfaz local
     */
    public datos.EstadoCertificado encontrarEstadoCertificado(String nombre);


      /***
     * Actualiza una instancia de Certificado en la base de datos.
     * @param idCertificado
     * @param nroCertificado
     * @param periodo
     * @param fechaMedicion
     * @param monto
     * @param fondos
     * @param nroOrdenPago
     * @param estado
     * @return true si el certificado fue actualizado con exito, false si no fue actualizado
     * Interfaz local
     */
    public boolean modificarCertificado(int idCertificado, int nroCertificado, String periodo, java.util.Date fechaMedicion, BigDecimal monto,
            String fondos, int nroOrdenPago, String estado);

     /***
     * Elimina una instancia de Certificado cuyo id coincida con el parametro idCertificado.
     * @param idCertificado
     * @return true si el certificado fue eliminado con exito, false si no fue eliminado
     * Interfaz local
     */
    public boolean eliminarCertificado(int idCertificado);

    /***
     * Retorna el Acumulado Financiero, la suma acumulada del campo financiero parcial,
     * para una Obra en particular cuyo id coincida con el parametro idObra.
     * @param idObra
     * @return la suma acumulada del campo financiero parcial por obra
     * Interfaz local
     */
    public BigDecimal calcularAcumuladoFinancieroPorObra(int idObra);

     /***
      * Retorna el Acumulado Financiero, la suma acumulada del campo financiero parcial,
      * para una Obra y Certificado en particular cuyos ID coincidan con el parametro idObra
      * y idCertificado respectivamente.
      * @param idCertificado
      * @param idObra
      * @return la suma acumulada del campo financiero parcial por obra y certificado
      * Interfaz local
      */
    public BigDecimal calcularAcumuladoFinancieroModificarPorObra(int idCertificado, int idObra);
    
}
